home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (PO)
/
Nibble Volume 11, No. 08 (1990-08)(MindCraft Publishing)(Side A).zip
/
Nibble Volume 11, No. 08 (1990-08)(MindCraft Publishing)(Side A).po
/
IDENTIFIER.S
< prev
next >
Wrap
Text File
|
1996-12-24
|
3KB
|
134 lines
**************************
* IDENTIFIER Source Code *
* by Jim Ferr *
* Copyright (c) 1990 *
* MindCraft Publ. Corp. *
* Concord, MA 01742 *
**************************
* Merlin PRO
ORG $300 ;let's use page 3
*
XCE EQU $FB ;XCE opcode for 65C816
ROMIN EQU $C081 ;hardware switch to read ROM
*
JSR GETID ;get the ID
STA OURID ;save it
RTS ;and return to caller.
*
* Identify the system and return result in A
*
GETID LDA ROMIN ;read from ROM
*
SEC ;see if new or old machine
JSR $FE1F ;old machines have RTS here.
BCS OLD ;if carry still set, old.
BCC NEW ;if carry clear, new.
*
OLD LDA $FBB3
CMP #$38 ;old Apple II
BEQ A2
CMP #$EA ;II Plus or Apple III
BEQ A2OR3
CMP #$06
BNE BAD ;unknown
*
LDA $FBC0
BEQ A2CFAM ;IIc family
CMP #$EA
BEQ OLD2E ;unenhanced IIe
CMP #$E0
BEQ NEW2E ;enhanced IIe
BNE BAD ;unknown
*
A2CFAM LDA $FBBF ;determine which IIc
BEQ A2C2 ;with 3.5 ROM
CMP #$FF
BEQ A2C1 ;original IIc
CMP #$03
BEQ A2C3 ;with org. mem. exp.
CMP #$04
BEQ A2C4 ;with rev. mem. exp.
CMP #$05
BEQ A2CPLUS ;IIc Plus
BNE BAD ;unknown
*
A2OR3 LDA $FB1E
CMP #$AD
BEQ A2PLUS ;II Plus
CMP #$8A
BNE BAD ;unknown if not
*
LDA #3 ;Apple III
RTS
*
BAD LDA #0 ;unknown machine
RTS
*
A2 LDA #1 ;original Apple II
RTS
*
A2PLUS LDA #2 ;Apple II Plus
RTS
*
OLD2E LDA #4 ;original IIe
RTS
*
NEW2E LDA #5 ;enhanced IIe
RTS
*
A2C1 LDA #6 ;original Apple IIc
RTS
A2C2 LDA #7 ;IIc w/ 3.5 ROM
RTS
A2C3 LDA #8 ;IIc w/ org. mem exp.
RTS
A2C4 LDA #9 ;IIc w/ rev. mem exp.
RTS
*
A2CPLUS LDA #10 ;IIc Plus
RTS
*
NEW CLC ;get into 16 bit mode
DFB XCE
PHP ;save processor status
DFB $C2
DFB $30 ;REP 30, sets 16 bit
JSR $FE1F ;call ID routine again
STA NEWA ;each stores 16 bits
STX NEWX
STY NEWY
PLP ;restore 8 bit status
DFB XCE
*
LDA NEWY+1 ;get Machine ID number
BNE NEWER ;newer than IIgs
*
LDA NEWY ;ROM version number
BEQ GSROM00 ;ROM 00
CMP #$01
BEQ GSROM01 ;ROM 01
CMP #$03
BEQ GSROM03 ;ROM 03
BNE NEWGS ;new GS
*
GSROM00 LDA #11
RTS
GSROM01 LDA #12
RTS
GSROM03 LDA #13
RTS
NEWGS LDA #14
RTS
NEWER LDA #15
RTS
*
* Storage
*
OURID DFB $00 ;ID number result
*
NEWA DW $0000 ;for 16-bit cpu info
NEWX DW $0000
NEWY DW $0000